#include <iostream>
#include <cmath>

using namespace std;

int a[30];
int ptr = 1; //数组a的指针
int nn;

void print(int n){ //从1到n
    //cout << n << "\n";
    for(int i = 1; i <= n; i++){
        //if(a[i] == 0) break;
        if(a[i+1] == 0){
            if(a[i] != nn)  cout << a[i];
            break;
        }else{
            if(a[i] != nn)  cout << a[i] << "+";
        }
    }
    cout << "\n";
}

void dfs(int n, int cnt, int m){ //自然数n，拆出了cnt个，上一次减了m
    if(n == 0){
        print(cnt);
        return;
    }
    for(int i = m; i <= n; i++){
        a[ptr++] = i;
        //cout << n << " " << cnt << " " << m << "\n";
        dfs(n - i, ++cnt, i);
        a[--ptr] = 0;
    }
}

int main(){
    int n;
    cin >> n;
    //n = 7;
    nn = n;
    dfs(n, 0, 1);
    return 0;
}